From a8eebc6d1f09ec4217a452de2184c14aeeb06522 Mon Sep 17 00:00:00 2001 From: robertl Date: Thu, 8 Jan 2004 16:07:20 +0000 Subject: [PATCH] Correct vmem violations in gpx. Remove sandbagging. --- gpsbabel/gpx.c | 7 ++++--- gpsbabel/vmem.c | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/gpsbabel/gpx.c b/gpsbabel/gpx.c index c989e74df..7c153301d 100644 --- a/gpsbabel/gpx.c +++ b/gpsbabel/gpx.c @@ -339,7 +339,7 @@ gpx_start(void *data, const char *el, const char **attr) { char *e; char *ep; - vmem_realloc(¤t_tag, strlen(current_tag.mem) + 1 + strlen(el)); + vmem_realloc(¤t_tag, strlen(current_tag.mem) + 2 + strlen(el)); e = current_tag.mem; ep = e + strlen(e); *ep++ = '/'; @@ -636,9 +636,10 @@ gpx_cdata(void *dta, const XML_Char *s, int len) char **cdata; xml_tag *tmp_tag; - vmem_realloc(&cdatastr, len + strlen(cdatastr.mem)); + vmem_realloc(&cdatastr, 1 + len + strlen(cdatastr.mem)); estr = (char *) cdatastr.mem + strlen(cdatastr.mem); memcpy(estr, s, len); + estr[len] = 0; if (!cur_tag) return; @@ -671,7 +672,7 @@ void gpx_rd_init(const char *fname) { if ( fname[0] ) { - fd = fopen(fname, "r"); + fd = fopen(fname, "r"); if (fd == NULL) { fatal(MYNAME ": Cannot open %s for reading\n", fname ); } diff --git a/gpsbabel/vmem.c b/gpsbabel/vmem.c index b5dbde2cf..32eda7aae 100644 --- a/gpsbabel/vmem.c +++ b/gpsbabel/vmem.c @@ -58,7 +58,7 @@ vmem_realloc(vmem_t *vm, size_t size) * Reallocate only if we must. */ if (size > vm->size) { - vm->mem = xrealloc(vm->mem, size + 20); + vm->mem = xrealloc(vm->mem, size); vm->size = size; } return; -- 2.30.2